home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / fractal / kaos.lha / modellib / henonheiles_def.c < prev    next >
Encoding:
Text File  |  1990-01-16  |  1.3 KB  |  73 lines

  1.  
  2. int henonheiles_init()
  3. {
  4.     title_label = "Henon-Heiles";
  5.  
  6.     mapping_on = 0;
  7.     inverse_on = 1;
  8.     fderiv_on = 0;
  9.     enable_polar = 0;
  10.     enable_period = 0;
  11.     var_dim = 4;
  12.     param_dim = 1;
  13.     func_dim = 3;
  14.  
  15.     (void) malloc_init();
  16.  
  17.     var_label[0] = "x";
  18.     var_label[1] = "px";
  19.     var_label[2] = "y";
  20.     var_label[3] = "py";
  21.     param_label[0] = "epsilon";
  22.     func_label[0] = "Energy";
  23.     func_label[1] = "Ang Mon";
  24.     func_label[2] = "t";
  25.  
  26.     param[0] = 1;
  27.  
  28.     var_i[0] = 0.1;
  29.     var_i[1] = 0.1;
  30.     var_i[2] = 0.1;
  31.     var_i[3] = 0.1;
  32.  
  33.     /* stating values of parameter window box */
  34.     param_min[0]= 0; param_max[0]= 5;
  35.  
  36.     var_min[0]= -1; var_max[0]= 1;
  37.     var_min[1]= -1; var_max[1]= 1;
  38.     var_min[2]= -1; var_max[3]= 1;
  39.     var_min[3]= -1; var_max[2]= 1;
  40.     func_min[0]= -1; func_max[0]= 1;
  41.     func_min[1]= -1; func_max[1]= 1;
  42.     func_min[2]= 0; func_max[2]= 10000;
  43.  
  44.     f_p = henonheiles_f;
  45.     func_p = henonheiles_func;
  46. }
  47.  
  48. int henonheiles_f(f,index,x,p,t,dim)
  49. int index,dim;
  50. double f[],x[],p[],t;
  51. {
  52.     if(index!=2){
  53.         f[0] = x[1];
  54.         f[2] = x[3];
  55.     }
  56.     if(index!=1){
  57.         f[1] = - x[0] - p[0]*2.*x[0]*x[2];
  58.         f[3] = - x[2] - p[0]*(x[0]*x[0]-x[2]*x[2]);
  59.     }
  60. }
  61.  
  62. int henonheiles_func(f,x,p,t,dim)
  63. double f[],x[],p[],t;
  64. int dim;
  65. {
  66.     double x0sq,x2sq;
  67.     x0sq = x[0]*x[0];
  68.     x2sq = x[2]*x[2];
  69.     f[0] = 0.5 * (x[1]*x[1] + x[3]*x[3] + x0sq + x2sq) + p[0]*(x0sq*x[2] - x2sq*x[2]/3.);
  70.     f[1] = x[0]*x[3] - x[1]*x[2];
  71.     f[2] = t;
  72. }
  73.